<?php
namespace app\common\lib\model_operate;

/**
 * 查询方法
 */
abstract class QueryDevice
{

    /**
     * 创建查询
     * @param $config 配置
     * @param $queryType  查询方式,值为类文件名 对应的是app\common\lib\model_operate\query下的类
     * @return 根据queryType生成的查询对象
     */
    final public static function createQuery($config, $queryType = 'Join')
    {
        $queryType = cmf_parse_name($queryType, 1); //转换为大驼峰命名规则
        $queryObj  = '\\app\\common\\lib\\model_operate\\query\\' . $queryType;
        if (!class_exists($queryObj)) {
            throw new \Exception("类不存在:" . $queryObj);
        }
        return (new $queryObj($config))->toQuery();
    }

    /**
     * 查询方法
     */
    abstract public function toQuery();

    /**
     * 获取标记信息 可自定义
     */
    abstract public function getFlags();

}
